iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Software Development

軟體開發養成計畫:以小程式實作深化開發能力系列 第 17 篇

[Day17]JSON、XML、YAML:資料交換三兄弟

  • 分享至 

  • xImage
  •  

開場

在早期,程式開發者常常需要針對不同系統設計一套專屬的資料格式,不僅耗時費力,也很容易出錯。直到 JSON、XML、YAML 等資料格式的出現,大家才終於能依循共同規則來封裝資料,讓資料交換變得更加簡單、高效。

延續昨天我們在天氣查詢小程式中實作的內容,API 傳回的資料格式就是 JSON。但你有沒有想過:為什麼程式界會同時存在這麼多種資料格式?它們各自有什麼獨特的優勢?而在不同情境下,我們又該如何選擇最合適的格式呢?

今天,就讓我們一起深入比較 JSON、XML、YAML 這三種主流的資料交換格式,來看看它們的特色與優缺點吧!

1.為什麼需要資料交換格式

我們可以想像一下,在程式的世界裡,資料交換格式扮演的角色為翻譯官,不同的程式語言像是Python、JavaScript、Java每個處理資料的方式都不一樣,就像是不同的國家有各自的語言。當一個程式想把資料傳送給另一個程式時,如果沒有一個共通的格式,它們就無法理解對方傳來的資料是什麼,導致溝通失敗。

JSON、XML、YAML 等資料交換格式的出現,「語言規則」便誕生了,這讓所有程式都能遵循同樣的標準來打包、傳輸和解析資料。如此一來,無論是網頁前端(使用 JavaScript)、後端伺服器(使用 Python),還是手機 App(使用 Java),都能輕鬆地互相傳遞資訊,讓整個系統運作得更順暢。
統整了一下資料交換格式的主要目的:

  • 統一標準:讓不同程式語言和系統能用相同的格式進行溝通。
  • 提高效率:避免為每個不同的系統客製化一套資料格式,節省開發時間。
  • 確保準確性:降低因格式不一致而導致的資料解析錯誤。

2.JSON(JavaScript Object Notation)

JSON 是一種輕量級的資料交換格式,最初是從 JavaScript 語法演變而來的。它以**鍵值對(key-value pairs)**的方式儲存資料,就像我們常使用的字典或物件一樣。JSON 的語法非常簡潔易懂,可讀性高,因此廣受開發者歡迎,特別是在 Web 服務和 API 傳輸中,幾乎成為了主流標準。
格式範例:

{
  "city": "Taipei",
  "temperature": 28,
  "weather": "Sunny"
}

3.XML(eXtensible Markup Language)

XML 是一種可擴展的標記語言,它使用類似 HTML 的標籤(tags)來定義資料結構。每個標籤都可以自訂,因此 XML 的彈性極高,可以描述非常複雜的資料。XML 的設計初衷是為了讓資料具有自我描述性,讓使用者光看檔案就能理解其內容。
格式範例:

<weather>
  <city>Taipei</city>
  <temperature>28</temperature>
  <condition>Sunny</condition>
</weather>

4.YAML(YAML Ain’t Markup Language)

YAML 是一種專注於可讀性的資料格式,特別適合用來撰寫設定檔。它使用**縮排(indentation)**來表示資料的層次結構,類似於 Python 的語法。YAML 的語法比 JSON 更精簡,捨棄了許多括號和引號,讓設定檔看起來更乾淨俐落。
格式範例:

weather:
  city: Taipei
  temperature: 28
  condition: Sunny

5.三者比較表格

特性 JSON XML YAML
可讀性 高 中等 極高
檔案大小 輕量 較大 輕量
語法 鍵值對、大括號、中括號 標籤 (Tags) 縮排、鍵值對
主要應用 Web API、資料傳輸 舊型 Web 服務、設定檔 設定檔、自動化腳本
易用性 高 中等 高

總結是JSON、XML、YAML 各自有擅長的領域。JSON 輕巧靈活,是 API 的首選;XML 結構嚴謹,適合複雜資料;而 YAML 則因其高可讀性,在設定檔中表現出色。選擇正確的格式,能讓我們的開發事半功倍!

明天,我們將應用今天所學到的知識,進入 Day 18 的實作環節!
我們將一起打造一個 「英文單字背誦小程式」,屆時會親手操作這些資料格式,讓理論與實務完美結合。敬請期待!


上一篇
[Day16]查詢今天要不要帶雨傘:Python 串接天氣 API
下一篇
[Day18]程式 x 學習:用 Python 做一個單字測驗器
系列文
軟體開發養成計畫:以小程式實作深化開發能力 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言